/**
 * 配置管理
 *
 * 使用 zod + dotenv 进行配置管理，支持环境变量和默认值
 */

// 加载环境变量
import 'dotenv/config';

import { ConfigSchema } from './schema';

// 加载配置
let validatedConfig;
try {
  validatedConfig = ConfigSchema.parse(process.env);
} catch (err) {
  console.error({
    module: 'config',
    time: Date.now(),
    err,
    msg: '❌ 配置验证失败',
  });
  throw err;
}

// 生成脱敏的配置对象
export const safePrintConfig: Record<string, unknown> = {};
for (const [key, value] of Object.entries(ConfigSchema.shape)) {
  if (value.meta()?.sensitive) {
    safePrintConfig[key] = '******';
  } else {
    safePrintConfig[key] = validatedConfig[key as keyof typeof validatedConfig];
  }
}

/**
 * 配置对象
 */
export const config = validatedConfig;
